<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<script>
/*
基本数据类型
   *    数值 number
   *
   *    字符串 string
   *      模板字符串写法 ``
   *      属性: .length 返回字符串的长度 读取长度判断等操作
   *      访问字符每一位:
   *        下标开始位置 从 0 开始
   *
   *    假设 字符串 str 长度大于 0
   *    访问这个字符串最后一位
   *    str[str.length-1]
        布尔类型: boolean 真假类型: 只有两个值
   *    true  真
   *    false 假

undefined 未定义
1.声明变量未给定初始值，值就是undefined
2.访问一个不存在的属性，值也是undefined
3.undefined 这个值不能访问属性，访问就会报错
*    "Uncaught TypeError: Cannot read property 'b' of undefined"
*    要去找b前面的内容, 是前面的内容出错了

null 一个不存在的东西，空 只有一个值 null
已经定义了但是此时这个值不存在，就为null
一个用来占位的不存在的对象
可以使用null清空对象的引用关系
null和undefined一样不能访问属性，访问就会报错

NaN 数值，表示计算出错得出来的值

undefined 未定义，没有给定初始值或者访问不到值

null 不存在的对象，用来占位和清空对象的引用关系，作为对象的初始值，只针对对象，不针对其他类型

对象 object
一个有若干个属性构成的整体，就是对象

对象的书写方式：
{
    属性名：属性值，
    属性名：属性值，
}

对象的访问属性方式：
. 
[]中传入一个值，一字符串的形式，加引号

*/
//let str = "这是一个字符串"

//console.log(str[str.length-8])

//console.log(typeof typeof str.length)

//let a ="undefined"

//console.log(a.b)

let a = {
    b:1,
    c:2,
   
}

let b = "c"


console.log(a[b]) //2
console.log(a.b)  //1
console.log(a["b"])//1

</Script>
</body>
</html>